The SRTP is a profile of the Real-time Transport Protocol (RTP) that can provide confidentiality, message authentication, and replay protection to the RTP traffic by sending and receiving data over a network supporting the RTP and the Internet Protocol (IP) using one or more encrypted sessions. Replay protection refers to any mechanisms that can detect and drop replayed packets. A packet is said to be replayed when it is stored by an unauthorized entity and re-injected into the network at a later point in time: the packet replay is a type of attack intended to disrupt the integrity of confidential communications and/or the stability of network traffic.
The SRTP standard requires senders to transmit data units, such as cells or packets, in accordance with a correct time sequence by consecutively incrementing the sequence number of the data units. This incrementing method may work well if the data units are routed directly to receivers from the senders that have the full knowledge of the data being sent. In practice, however, there may be one or more intermediary applications and/or devices that, for instance, need to receive and forward the data units. There may be also applications and/or devices that need to receive and process the data in the data units before retransmitting them to the receivers.
Data units, such as cells or packets, can be lost or reordered during the transitional forwarding and/or processing by one or more intermediary applications and/or devices. The SRTP standard, however, does not support any mechanisms for preventing such transitional loss or reordering of data units by intermediary senders, such as the applications or devices that forward and/or process the data units.
A jitter buffer can be used to retransmit transitional data units in the same incremental order in which they were sent from a sender. The buffer can be used to overcome reordering of data units. The buffer can also handle loss of data units. For instance, applications using the buffer can send empty units if one or more data units are lost. However, the jitter buffer adds delay between receiving and retransmitting the transitional data units. Also, sending empty units, which receivers should eventually drop, adds processing delays and may increase the network traffic load.